/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package samplejpa;

import acceso.AutorJpaController;
import acceso.LibroJpaController;
import acceso.exceptions.PreexistingEntityException;
import static java.util.Collections.list;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.FlushModeType;
import javax.persistence.Persistence;
import javax.persistence.Query;
import modelos.LibroModel;
import persistencia.Autor;
import persistencia.Libro;

/**
 *
 * @author Dhaby Xiloj <dhabyx@gmail.com>
 */
public class SampleJPA {

    public void insertar(){
       EntityManagerFactory emf = Persistence.createEntityManagerFactory("sampleJPAPU");
        LibroJpaController libroController = new LibroJpaController(emf);
        EntityManager em = emf.createEntityManager(); //consulta sql para arriba
        Libro libroNuevo = new Libro();
        libroNuevo.setIsbn("1234asdf");
        libroNuevo.setNombre("Nuevo titulo");
        libroNuevo.setCategoria("NA");
        try {
            libroController.create(libroNuevo);
        } catch (PreexistingEntityException ex) {
            Logger.getLogger(SampleJPA.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(SampleJPA.class.getName()).log(Level.SEVERE, null, ex);
        }
        emf.close();
        
        
    }
    
    public void selección(){
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("sampleJPAPU");
        LibroJpaController libroController = new LibroJpaController(emf);
        EntityManager em = emf.createEntityManager();
        List<Libro> libros;
        
        libros = libroController.findLibroEntities();
        System.out.println("----------");
        for (Libro libro: libros) {
            System.out.println(libro.getNombre());
        }
        emf.close();
    }
  public void consultar(){
        Query qr;
        EntityManagerFactory emf = conexion.getInstancia().getEMF();
        EntityManager em = emf.createEntityManager();
        qr = em.createNamedQuery("Libro.findAll");
        List<Libro> libros=qr.getResultList();
        LibroModel librosModelo = new LibroModel(libros);
        
        vista v = new vista(librosModelo);
        v.setVisible(true);
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        EntityManagerFactory emf = conexion.getInstancia().getEMF(); // patron single
        
        LibroJpaController libroController = new LibroJpaController(emf);
        EntityManager em = emf.createEntityManager();
        LibroJpaController librocontrol= new LibroJpaController(emf);
        //consultar();
        Libro l= librocontrol.findLibro("a1");
       
        List<Libro> listalibros=libroController.findLibroEntities();
        for(Libro i:listalibros){
            System.out.println(i.getNombre());
        }
        Query q;
        q= emf.createEntityManager().createNamedQuery("Libro.findByNombre");
        q.setParameter("nombre", "the myst");
        
        List<Libro> listaconsulta= q.getResultList();
        
        for(Libro lx:listaconsulta){
            System.out.println(lx.getNombre());
        }
     /*   AutorJpaController autocontroller= new AutorJpaController(emf);
        Autor s= autocontroller.findAutor("1");
   
        Libro libroNuevo = new Libro();
        libroNuevo.setIsbn("1234asd");
        libroNuevo.setNombre("Nuevo titulo");
        libroNuevo.setCategoria("NA");
        libroNuevo.setAutor(s);
        
        try {
            libroController.create(libroNuevo);
        } catch (PreexistingEntityException ex) {
            Logger.getLogger(SampleJPA.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(SampleJPA.class.getName()).log(Level.SEVERE, null, ex);
        }
        emf.close();
       
    
        
     /*  LibroJpaController libroController = new LibroJpaController(emf);
        EntityManager em = emf.createEntityManager();
        
        
        Query qr;
        qr = em.createNamedQuery("Libro.findAll");
        List<Libro> libros=qr.getResultList();
        LibroModel librosModelo = new LibroModel(libros);
        
        vista v = new vista(librosModelo);
        v.setVisible(true);*/
    }
    
    
}
